当前位置:  开发笔记 > 编程语言 > 正文

| vs || ......我使用哪一个是否重要?

如何解决《|vs||我使用哪一个是否重要?》经验,为你挑选了2个好方法。

我是否使用|是否重要 或|| 作为一个或运营商?两者似乎都可以互换.

function Sum(num, sum) {
    sum = sum | 0;
    return sum;
}

function SumII(num, sum) {
    sum = sum || 0;
    return sum;
}

console.log(Sum(7));
//0
console.log(SumII(7));
//0



1> skypjack..:

是的,存在巨大差异.

运算符|是按位运算符 .
我引用链接的文档:

在每个位位置返回一个位,其中一个或两个操作数的相应位是1.

因此,通过使用带有两个数字的运算符,将为您提供另一个由前两个数字构建的数字.

运营商||是逻辑运营商 .
它将其操作数计算为布尔值(如果需要,可以想象为隐式转换),并以原始形式返回第一个真值.

碰巧对于某些操作,结果是相同的(例如,如果在保护中使用,其中应用运算符的结果被视为布尔值),无论您决定使用哪个运算符,但它将是更好地了解它们之间的区别.



2> ROMANIA_engi..:

逻辑运算

使用||&&替代|&由于第一批使用"短路"的机制.因此,它们更有效(并且更安全),因为如果左项已经被评估为true/ false,则在不评估最后项的情况下知道结果.

例如:(对于未定义的x)

true | x     // ReferenceError: x is not defined
true || x    // true
false & x    // ReferenceError: x is not defined
false && x   // false

比特运营

使用|&.

例如:

4|2 回报 6

4 = 100b
2 = 010b
6 = 110b
(参见每列的OR运算:1 OR 0 = 1,0或1 = 1,0或0 = 0)

4||2 回报 4

4是一个"真"值(因为它不是0,false,null,"",undefinedNaN)=>结果不依赖于比特值=>操作员不会逐位

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有